Prétraitement de fichiers G-Code volumineux
Le CNC15_LargeGCode.project un exemple de projet se trouve dans le répertoire d'installation de CODESYS sous ..\CODESYS SoftMotion\Examples.
L'exemple de projet montre comment traiter des fichiers de code G volumineux. Étant donné que les fichiers très volumineux sont particulièrement courants en sortie de systèmes CAD/CAM, ce cas est illustré à titre d'exemple
systèmes CAD/CAM génèrent souvent des fichiers de code G de plusieurs centaines de milliers de lignes. Il s'agit de segments linéaires très courts (G1), généralement de l'ordre de 100 micromètres à un millimètre. Ces courts segments linéaires tracent le contour de la pièce. Ils ne forment pas un chemin fluide. La tangente saute généralement entre les segments linéaires
L'exemple montre comment lire ces fichiers volumineux de manière efficace avec des besoins de mémoire constants et comment obtenir une courbe de vitesse lisse sur une trajectoire composée de nombreux segments linéaires courts. Le contour d'origine de la pièce est reconstruit lors du prétraitement du code G.
Structure de la demande
La structure est typique des applications CNC. Le code G est lu dans la tâche d'arrière-planPathTask), et le prétraitement des chemins a également lieu ici. L'interpolation est effectuée dans la tâche du busMainTask).
Lecture de fichiers volumineux
Afin de réduire la latence au début du traitement du code G, une boucle est utilisée dans la tâche d'arrière-plan. Par souci de simplicité, un compteur est utilisé pour la condition d'interruption. En fonction de l'application, du code G et des performances de l'automate, d'autres conditions d'interruption, telles qu'un minuteur, peuvent être utiles. La boucle se terminera avant d'atteindre cette condition d'abandon lorsque la file d'attente des chemins est pleine
// Set this value depending on your other tasks, PLC performance, and G-Code counter := 25; WHILE counter > 0 AND (poqDataOut = 0 OR_ELSE (NOT poqDataOut^.bFull AND NOT poqDataOut^.bEndOfList)) DO <Read G-Code and process it> counter := counter - 1; END_WHILE
Au moyen de canalisations dans le prétraitement, même les très gros fichiers de code G peuvent être lus avec des besoins de mémoire faibles et constants. Les tailles de file d'attente sont choisies de manière à être suffisamment grandes pour permettre aux blocs fonctionnels respectifs de prévoir suffisamment.
La file d'attente de sortie de SMC_NCInterpreter est également la file d'attente d'entrée de SMC_SmoothMerge. Au total, 128+3 éléments sont réservés à la file d'attente de sortie. 3 est une réserve du SMC_OutQueue et 128 restent à utiliser comme prévisions pour SMC_SmoothMerge. SMC_SmoothMerge combine un maximum de 128 segments linéaires courts en une seule spline.
La file d'attente de sortie de SMC_SmoothMerge est également la file d'attente d'entrée de SMC_SmoothPath. SMC_SmoothPath nécessite au moins 2 éléments, plus une réserve de 3 éléments, comme prévision. Si les fonctions M sont situées entre deux éléments lissés, d'autres éléments sont nécessaires en fonction du nombre de
La file d'attente de sortie de SMC_SmoothMerge est également la file d'attente d'entrée de SMC_Interpolator. Une prévision de 100 éléments convient à la plupart des applications. Pour plus d'informations, consultez les rubriques suivantes : Prétraitement des chemins et tailles des files d'attente.
/// Buffer of the interpreter, lookahead for SMC_SmoothMerge aBufIp : ARRAY[0..130] OF SMC_GeoInfo; /// Buffer of SMC_SmoothMerge aBufSmm : ARRAY[0..15] OF SMC_GeoInfo; /// Buffer of SMC_SmoothPath, lookahead for SMC_Interpolator aBufSmp : ARRAY[0..99] OF SMC_GeoInfo;
Prétraitement de segments linéaires
Le SMC_SmoothMerge Le bloc fonctionnel assure une courbe de vitesse régulière sur les nombreux segments linéaires très courts. Il combine autant de segments linéaires consécutifs que possible en une seule spline, tout en maintenant les tolérances spécifiées. Dans cet exemple, un écart maximal de 0,1 mm en X et Y est autorisé (PARAMETERS.piMaxDifference).
Lecture des segments linéaires courts

Combiner plusieurs segments linéaires en splines à l'aide de
SMC_SmoothMerge.
Lissage entre les cannelures avec
SMC_SmoothPathcar, comme on l'a vu plus haut, les splines ne se connectent pas tangentiellement les unes aux autres.
Mise en service
Créez l'application et téléchargez-la sur une manette.
Ouvrez la trace et téléchargez-la sur le contrôleur.
Démarrez l'application.
Vous pouvez suivre le traitement du code G.